package com.example.demo.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.demo.dto.ApiResponse;
import com.example.demo.entity.Post;
import com.example.demo.service.PostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 帖子管理控制器
 * 处理与帖子相关的HTTP请求，包括帖子的创建、查询、更新、删除和点赞等操作
 * 提供RESTful API接口，支持帖子的全生命周期管理
 */
@RestController
@RequestMapping("/api/posts")
public class PostController {

    @Autowired
    private PostService postService;

//    /**
//     * 获取帖子列表，支持分页和分类筛选
//     *
//     * @param pageNum 当前页码，默认为1
//     * @param pageSize 每页显示的记录数，默认为10
//     * @param categoryId 分类ID，可选参数，用于筛选特定分类的帖子
//     * @return 返回分页后的帖子列表数据
//     */
    @GetMapping("/all")
    public ApiResponse<List<Post>> getPostList(){
//            @RequestParam(defaultValue = "1") Integer pageNum,
//            @RequestParam(defaultValue = "10") Integer pageSize,
//            @RequestParam(required = false) Long categoryId) {
       // return ApiResponse.success(postService.getPostPage(pageNum, pageSize, categoryId));
        return ApiResponse.success(postService.all());
    }

    /**
     * 根据ID获取帖子详情
     * 
     * @param id 帖子ID
     * @return 返回指定ID的帖子详细信息
     */
    @GetMapping("/{id}")
    public ApiResponse<Post> getPost(@PathVariable Long id) {
        return ApiResponse.success(postService.getPostDetail(id));
    }

    /**
     * 创建新帖子
     * 
     * @param post 帖子实体，包含标题、内容等信息
     * @return 返回创建结果，true表示创建成功
     */
    @PostMapping
    public ApiResponse<Boolean> createPost(@RequestBody Post post) {
        return ApiResponse.success(postService.save(post));
    }

    /**
     * 更新帖子信息
     * 
     * @param id 帖子ID
     * @param post 更新的帖子信息
     * @return 返回更新结果，true表示更新成功
     */
    @PutMapping("/{id}")
    public ApiResponse<Boolean> updatePost(@PathVariable Long id, @RequestBody Post post) {
        post.setId(id);
        return ApiResponse.success(postService.updateById(post));
    }

    /**
     * 删除帖子
     * 
     * @param id 要删除的帖子ID
     * @return 返回删除结果，true表示删除成功
     */
    @DeleteMapping("/{id}")
    public ApiResponse<Boolean> deletePost(@PathVariable Long id) {
        return ApiResponse.success(postService.removeById(id));
    }

    /**
     * 为帖子点赞
     * 
     * @param id 要点赞的帖子ID
     * @return 返回点赞结果，true表示点赞成功
     */
    @PostMapping("/{id}/like")
    public ApiResponse<Boolean> likePost(@PathVariable Long id) {
        return ApiResponse.success(postService.incrementLikeCount(id));
    }
}